package com.example.project.entity;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import com.example.project.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 需求处理统计对象 t_issue_processing_stats
 */
public class IssueProcessingStats extends BaseEntity {
    
    private static final long serialVersionUID = 1L;
    
    /** 主键ID */
    private Long id;
    
    /** 需求ID */
    private Long issueId;
    
    /** 项目ID */
    private Long projectId;
    
    /** 类别ID */
    private Long categoryId;
    
    /** 跟踪类型ID */
    private Long trackerId;
    
    /** 优先级ID */
    private Long priorityId;
    
    /** 发布者ID */
    private Long authorId;
    
    /** 处理人ID */
    private Long assignedToId;
    
    /** 原始状态 */
    private Long statusFrom;
    
    /** 目标状态 */
    private Long statusTo;
    
    /** 操作类型：1-领取，2-提交，3-审核 */
    private Integer operationType;
    
    /** 处理时长(小时) */
    private BigDecimal processingHours;
    
    /** 操作时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime operationTime;
    
    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    
    /** 关联信息 - 需求标题 */
    private String issueSubject;
    
    /** 关联信息 - 项目名称 */
    private String projectName;
    
    /** 关联信息 - 发布者姓名 */
    private String authorName;
    
    /** 关联信息 - 处理人姓名 */
    private String assignedToName;
    
    /** 关联信息 - 原始状态名称 */
    private String statusFromName;
    
    /** 关联信息 - 目标状态名称 */
    private String statusToName;
    
    /** 关联信息 - 操作类型名称 */
    private String operationTypeName;
    
    // Getters and Setters
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public Long getIssueId() {
        return issueId;
    }
    
    public void setIssueId(Long issueId) {
        this.issueId = issueId;
    }
    
    public Long getProjectId() {
        return projectId;
    }
    
    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }
    
    public Long getCategoryId() {
        return categoryId;
    }
    
    public void setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
    }
    
    public Long getTrackerId() {
        return trackerId;
    }
    
    public void setTrackerId(Long trackerId) {
        this.trackerId = trackerId;
    }
    
    public Long getPriorityId() {
        return priorityId;
    }
    
    public void setPriorityId(Long priorityId) {
        this.priorityId = priorityId;
    }
    
    public Long getAuthorId() {
        return authorId;
    }
    
    public void setAuthorId(Long authorId) {
        this.authorId = authorId;
    }
    
    public Long getAssignedToId() {
        return assignedToId;
    }
    
    public void setAssignedToId(Long assignedToId) {
        this.assignedToId = assignedToId;
    }
    
    public Long getStatusFrom() {
        return statusFrom;
    }
    
    public void setStatusFrom(Long statusFrom) {
        this.statusFrom = statusFrom;
    }
    
    public Long getStatusTo() {
        return statusTo;
    }
    
    public void setStatusTo(Long statusTo) {
        this.statusTo = statusTo;
    }
    
    public Integer getOperationType() {
        return operationType;
    }
    
    public void setOperationType(Integer operationType) {
        this.operationType = operationType;
    }
    
    public BigDecimal getProcessingHours() {
        return processingHours;
    }
    
    public void setProcessingHours(BigDecimal processingHours) {
        this.processingHours = processingHours;
    }
    
    public LocalDateTime getOperationTime() {
        return operationTime;
    }
    
    public void setOperationTime(LocalDateTime operationTime) {
        this.operationTime = operationTime;
    }
    
    public LocalDateTime getCreateTime() {
        return createTime;
    }
    
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    
    public String getIssueSubject() {
        return issueSubject;
    }
    
    public void setIssueSubject(String issueSubject) {
        this.issueSubject = issueSubject;
    }
    
    public String getProjectName() {
        return projectName;
    }
    
    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }
    
    public String getAuthorName() {
        return authorName;
    }
    
    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }
    
    public String getAssignedToName() {
        return assignedToName;
    }
    
    public void setAssignedToName(String assignedToName) {
        this.assignedToName = assignedToName;
    }
    
    public String getStatusFromName() {
        return statusFromName;
    }
    
    public void setStatusFromName(String statusFromName) {
        this.statusFromName = statusFromName;
    }
    
    public String getStatusToName() {
        return statusToName;
    }
    
    public void setStatusToName(String statusToName) {
        this.statusToName = statusToName;
    }
    
    public String getOperationTypeName() {
        return operationTypeName;
    }
    
    public void setOperationTypeName(String operationTypeName) {
        this.operationTypeName = operationTypeName;
    }
}